/**
 * 
 */
package com.dalonedrau.jogl.engine;

import java.awt.Color;

/**
 * @author Donald
 */
public abstract class ProjectConstants {
	/** the one and only instance of the <code>ProjectConstants</code> class. */
	private static ProjectConstants	instance;
	/**
	 * Gives access to the singleton instance of {@link ProjectConstants}.
	 * @return {@link ProjectConstants}
	 */
	public static ProjectConstants getInstance() {
		return ProjectConstants.instance;
	}
	/**
	 * Creates a new instance of {@link ProjectConstants}.
	 */
	protected ProjectConstants() {}
	/** Assigns all views to the interface. */
	public abstract void assignViews();
	/**
	 * Gets the default font color.
	 * @return {@link Color}
	 */
	public abstract Color getDefaultFontColor();
	/**
	 * Gets the default H1 font for the project.
	 * @return {@link String}
	 */
	public abstract String getFontH1();
	/**
	 * Gets the default H2 font for the project.
	 * @return {@link String}
	 */
	public abstract String getFontH2();
	/**
	 * Gets the default "normal" font for the project.
	 * @return {@link String}
	 */
	public abstract String getFontNormal();
	/**
	 * Gets the default Title font for the project.
	 * @return {@link String}
	 */
	public abstract String getFontTitle();
	/**
	 * Gets the inactive component font color.
	 * @return {@link Color}
	 */
	public abstract Color getInactiveFontColor();
	/**
	 * Gets the path to the game's map files.
	 * @return {@link String}
	 */
	public abstract String getMapFilePath();
	/**
	 * Gets the number of fonts loaded during gameplay.
	 * @return <code>int</code>
	 */
	public abstract int getNumGameFonts();
	public abstract String getScrollBarDownArrowImage();
	public abstract String getScrollBarUpArrowImage();
	public abstract String getTextFileListing();
	public abstract String getTextFilePath();
	/**
	 * Gets the border class used for the tooltip.
	 * @return {@link String}
	 */
	public abstract String getTooltipBorderClass();
	/**
	 * Gets the tooltip font color.
	 * @return {@link Color}
	 */
	public abstract Color getTooltipFontColor();
	/**
	 * Gets the border images used for the project's VX-style dialog.
	 * @return {@link String}[]
	 */
	public abstract String[] getVXStyleDialogBorderImages();
	/**
	 * Gets the top gradient color for the project's VX-style dialog background.
	 * @return <code>float</code>[]
	 */
	public abstract float[] getVXStyleDialogGradientBottom();
	/**
	 * Gets the top gradient color for the project's VX-style dialog background.
	 * @return <code>float</code>[]
	 */
	public abstract float[] getVXStyleDialogGradientTop();
	/**
	 * Gets the border insets for the project's VX-style dialog.
	 * @return <code>int</code>[]
	 */
	public abstract int[] getVXStyleDialogInsets();
	/**
	 * Gets the x-offset for the project's VX-style dialog background.
	 * @return <code>int</code>
	 */
	public abstract int getVXStyleDialogXOffset();
	/**
	 * Gets the y-offset for the project's VX-style dialog background.
	 * @return <code>int</code>
	 */
	public abstract int getVXStyleDialogYOffset();
	/**
	 * Gets the border images used for the project's VX-style speech window.
	 * @return {@link String}[]
	 */
	public abstract String[] getVXStyleSpeechBorderImages();
	/**
	 * Gets the bottom gradient color for the project's VX-style speech window
	 * background.
	 * @return <code>float</code>[]
	 */
	public abstract float[] getVXStyleSpeechGradientBottom();
	/**
	 * Gets the top gradient color for the project's VX-style speech window
	 * background.
	 * @return <code>float</code>[]
	 */
	public abstract float[] getVXStyleSpeechGradientTop();
	/**
	 * Gets the border insets for the project's VX-style speech window.
	 * @return <code>int</code>[]
	 */
	public abstract int[] getVXStyleSpeechInsets();
	/**
	 * Gets the x-offset for the project's VX-style speech window background.
	 * @return <code>int</code>
	 */
	public abstract int getVXStyleSpeechXOffset();
	/**
	 * Gets the y-offset for the project's VX-style speech window background.
	 * @return <code>int</code>
	 */
	public abstract int getVXStyleSpeechYOffset();
	/** Initializes game cursors. */
	public abstract void initCursors();
	/**
	 * Initializes game maps.
	 * @throws Exception if an error occurs
	 */
	public abstract void initGameMaps() throws Exception;
	/**
	 * Sets the global instance.
	 * @param value the instance
	 */
	protected final void setInstance(final ProjectConstants value) {
		ProjectConstants.instance = value;
	}
}
